package com.example.designhbwxz.book.service.impl;

import com.example.designhbwxz.book.constant.EnumConstants;
import com.example.designhbwxz.book.factory.RegisterLoginComponentFactory;
import com.example.designhbwxz.book.pojo.UserInfo;
import com.example.designhbwxz.book.repo.UserRepository;
import com.example.designhbwxz.book.service.AbstractRegisterLoginFunc;
import com.example.designhbwxz.book.service.RegisterLoginFuncInterface;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.annotation.PostConstruct;

/**
 * 桥接者模式实现类一
 * <p/>
 * 默认登陆注册实现类
 *
 * @author shenzw
 * @date 2023/10/28
 */
@Service
public class RegisterLoginByDefault extends AbstractRegisterLoginFunc implements RegisterLoginFuncInterface {

    @Autowired
    private UserRepository userRepository;

    /**
     * 初始化 funMap
     */
    @PostConstruct
    private void initFunMap() {
        RegisterLoginComponentFactory.funcMap.put(EnumConstants.DEFAULT.getCode(), this);
    }

    /**
     * 登陆（此处为“重构”【login】方法，仅仅将之前【UserService】的逻辑完全复制过来即可）
     *
     * @param account  账号
     * @param password 密码
     * @return String
     */
    @Override
    public String login(String account, String password) {
        return super.commonLogin(account, password, userRepository);
    }

    /**
     * 用户注册（此处为“重构”【register】方法，仅仅将之前【UserService】的逻辑完全复制过来即可）
     *
     * @param userInfo 用户信息
     * @return String
     */
    @Override
    public String register(UserInfo userInfo) {
        return super.commonRegister(userInfo, userRepository);
    }

    /**
     * 校验用户是否已经存在【注册和登陆的时候】（此处为“重构”【checkUserExists】方法，仅仅将之前【UserService】的逻辑完全复制过来即可）
     *
     * @param userName 用户名
     * @return boolean
     */
    @Override
    public boolean checkUserExists(String userName) {
        return super.commonCheckUserExists(userName, userRepository);
    }
}
